package Generics_Reflect;

import java.util.ArrayList;
import java.util.List;


class ListGenericArrays<T>{
	List<GenericArray> list;
	
	public ListGenericArrays() {
		list=new ArrayList<GenericArray>();
	}
	
	@SuppressWarnings("unchecked")
	void add(T[] arrayToAdd){
		GenericArray t = new GenericArray(arrayToAdd);
		list.add(t);
	}
	
	List<GenericArray> res(){
		return list;
	}
	
	T get(int index){
		GenericArray tmp=list.get(0);
		return tmp.get(index);
	}
	
	class GenericArray{
	    T[] array;
		int size;

		GenericArray(T[] a) {
			array = a;
			size = array.length;
		}

		T[] rep() {
			return array;
		}

		int size() {
			return size;
		}

		T get(int index) {
			int i=0;
			for(; i<index; i++){
				if(array[index]==null)index++;
				if(index>array.length) return null;
			}
			return array[i];
		}

		T remove(int index) {
			size--;
			T tmp = array[index];
			array[index] = null;
			return tmp;
		}
	}
}
public class TestArrays {
	public static void main(String[] args) {
		Integer[] arrayint = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
		ListGenericArrays<Integer> lga = new ListGenericArrays<Integer>();
		lga.add(arrayint);
		System.out.println(lga.get(1));

	}

}
